# coding: utf-8
'''
@autor1: João Batista nº5479
@autor2: Luis Cabaço nº5606
@data Inicio: 17/11/2012 - 16:44
@data Fim: 3/12/2012 - 11:33
@obs:

Modulo para o tratamento dos ficheiros CSV
'''

import csv
import os
import time

class Criar_csv():
	'''
		Class para tratamento do CSV
	'''

	def verificar_ficheiro_csv(self, nome_ficheiro, cabecalho, dados):
		'''
			Metodo para verificar se existe o ficheiro csv

			Args:
				nome_ficheiro: nome do ficheiro a ser criado
				cabecalho: cabeçalho dos dados
				dados: dados a serem registados no csv
			
			Raises:
				IOError: Base de dados não existe - uma nova base de dados irá ser criada.

			Returns:
				Mensagem necessária ao programa
		'''

		# excepção para verificar se já existe o ficheiro da estatistica
		try:
			ficheiro_csv=open(nome_ficheiro) # abrir o ficheiro csv
			ficheiro_csv.close()
		
		# se nao existir, vai ser criado
		except IOError:	
			mensagem = "Ficheiro criado com sucesso!"
			self.escrever_csv(nome_ficheiro, cabecalho, dados)
			return mensagem

		# se existir, vai ser atualizado
		else:
			mensagem = "Já existe um ficheiro com o mesmo nome, vai ser atualizado agora."
			os.remove(nome_ficheiro)
			self.escrever_csv(nome_ficheiro, cabecalho, dados)
			return mensagem


	def escrever_csv(self, nome_ficheiro, cabecalho, dados):
		'''
			Metodo para a criação e preenchimento do ficheiro

			Args:
				nome_ficheiro: nome do ficheiro a ser criado
				cabecalho: cabeçalho dos dados
				dados: dados a serem registados no csv
		'''

		ficheiro_csv=open(nome_ficheiro, "wb") # abrir o ficheiro csv
		escrivao = csv.writer(ficheiro_csv, delimiter =',') # writer

		# cabeçalho
		escrivao.writerow(cabecalho)

		# dados
		if isinstance(dados[0], int):
			escrivao.writerow(dados)
			pass

		else:
			for linha in dados:
				escrivao.writerow(linha)
				pass

		ficheiro_csv.close() # fechar o ficheiro csv
		pass
	pass